\documentclass{ctexart}
\usepackage{listings}%插入代码
\usepackage{geometry}%设置页面大小边距等
\usepackage{authblk}%作者机构等信息
\usepackage{graphicx}%插入图片
\usepackage{subfigure}%并排子图 共享标题 有子标题
\usepackage{float}
\usepackage{url}%Bib中引用网页
\usepackage{amssymb}%为了用\mathbb
\usepackage{amsmath}%数学方程的显示
%\usepackage{amsthm}%数学定理
\usepackage{listings}%插入代码
\usepackage{fancyhdr}%设置页眉页脚
\usepackage{lastpage}%总页数
\usepackage{hyperref}%引用网页
\usepackage{xcolor}
\usepackage{tikz}



\geometry{a4paper,left=2cm,right=2cm,top=2cm,bottom=2cm}%一定要放在前面！
\pagestyle{fancy}%设置页眉页脚
\lhead{周游\ 3200106105}%页眉左
\chead{Numerical Analysis project}%页眉中
\rhead{2023/01/01}%章节信息
\cfoot{\thepage/\pageref{LastPage}}%当前页，记得调用前文提到的宏包
\rfoot{浙江大学数学科学学院}
\renewcommand{\headrulewidth}{0.1mm}%页眉线宽，设为0可以去页眉线
\renewcommand{\footrulewidth}{0.1mm}%页脚线宽，设为0可以去页眉线
\setlength{\headwidth}{\textwidth}

\hypersetup{%设置网页链接颜色等
    colorlinks=true,%链接将会有颜色，默认是红色
    linkcolor=blue,%内部链接，那些由交叉引用生成的链接将会变为蓝色（blue）
    filecolor=magenta,%链接到本地文件的链接将会变为洋红色（magenta）
    urlcolor=blue,%链接到网站的链接将会变为蓝绿色（cyan）
    }

\newtheorem{theorem}{Theorem}
\newtheorem{proof}{Proof:}
\newtheorem{solution}{Solution:}

\begin{document}
%\newpage
\section*{项目作业报告}
\subsection*{运行说明}
输入make命令编译出可执行文件，X表示第X题答案。此处有ABCDE题的答案。
输入bash run运行生成的可执行程序，生成图片或数据，图片生成在fig文件夹中。
\subsection*{组织架构}
组织架构：
Polynomial.h是一个多项式类，能存储一个多项式，并能实现多项式的加法、乘法、输出等功能。 
spline.h为ppForm样条插值。Bspline.h为B样条插值。                          
X.cpp表示第X题答案的源码,可执行文件X能输出第X题答案。（X = A,B,C,D,E） \par

绘图方法：
使用matplotlibcpp.h工具画图，图片自动生成在fig文件夹中。

\subsection*{A}
   
对函数$y = \frac{1}{1+25x^2} $,使用ppForm方法插值，使用不同的节点个数N，
使用5种边界条件(complete,specified,natual,not\_a\_knot,periodic)，样条拟合分别得到函数图像、误差图像。
这里只以complete条件为例展示(图\ref{3})，剩余部分附在报告最后。
可以看到随着N的增大，函数拟合误差越来越小。拟合效果很好。 \par

\begin{figure}[H]
    \centering
    \subfigure[spline-func plot]{
      \label{D1} 
      \includegraphics[scale=0.4]{../fig/A-complete-func.png}}
    \hspace{0.5in} % 两图片之间的距离
    \subfigure[spline-error plot]{
      \label{D2} 
      \includegraphics[scale=0.4]{../fig/A-complete-error.png}}
    \caption{\label{3}ppForm plot}
\end{figure}

以子区间中点误差最大值为插值误差，考虑插值误差与子区间个数(N-1)的关系。由于节点等距，
又由于Thm3.12中,对子区间最大长度h,函数f(x)和样条s(x)有如下关系：
$$|f(x)-s(x)|\leqslant \frac{h^{4}}{16} \max \limits_{x \in [a,b]} |f^{(4)}(x)| = \frac{C}{(N-1)^4} $$
故插值误差与与子区间个数(N-1)的关系为：
$$ \ln (E_{\infty}) = -4 \ln (N-1) + \ln (C) $$
由log(errs)-log(N-1)的图像(图\ref{1.2})知，斜率大致为-4，验证了误差的四阶收敛率。

\begin{figure}[H] 
    \center{\includegraphics[scale=0.4]  {../fig/A-complete-rate.png}} 
    \caption{\label{1.2} log(errs)-log(N-1)的图像} 
\end{figure}

\subsection*{BCD}
B样条实现在Bspline.h中，对函数$y = \frac{1}{1+x^2} $，用二次和三次B样条插值，得到函数图像如下：

\begin{figure}[H] 
    \center{\includegraphics[scale=0.5]  {../fig/C-func.png}} 
    \caption{\label{2.1} func plot for C} 
\end{figure}

可以看到三次B样条拟合效果好于二次。样条拟合误差如下：

\begin{figure}[H] 
    \center{\includegraphics[scale=0.5]  {../fig/C-error.png}} 
    \caption{\label{2.2} error plot for C} 
\end{figure}

输出具体几个点的误差如下：(三次为$E_c$，二次为$E_q$)

\begin{table}[H]
    \begin{center}
    \begin{tabular}{|l|c|c|c|c|c|c|r|} 
        \hline
        x 	    &-3.5	        &-3	        &-0.5	        &0	            &0.5	        &3	        &3.5        \\
        \hline
        $E_c$ 	&0.000669568	&0	        &0.0205289	    &1.11022e-16	&0.0205289	    &0	        &0.000669568\\
        \hline
        $E_q$  	&0	            &0.00141838	&1.11022e-16	&0.120238	    &1.11022e-16	&0.00141838	&0          \\
        \hline
    \end{tabular}
    \end{center}
\end{table}

三次B样条在-3,0,3的误差较小，二次B样条在-3.5,-0.5,0.5,3.5处的误差较小，
因为这些点是插值点，提供了精确值，所以误差接近机器误差。在非插值点处以及误差图的表现来看，三次B样条比二次B样条精确。

\subsection*{E}
以累积弦长为参数，对心形图像进行样条插值。考虑到(0,$\pm \frac{2\sqrt{3}}{3}$)为特征点，
故以(0,$- \frac{2\sqrt{3}}{3}$)为起点作累积弦长。这样当N为偶数时能取到两个特征点。由于x,y的值
周期性变化，故采用periodic方法作边界条件。N=10,40,160时图像如下所示：

\begin{figure}[H] 
    \center{\includegraphics[scale=0.6]  {../fig/curve.png}} 
    \caption{\label{3.1}  plot for E} 
\end{figure}

由图可知，N越大，越接近真实图形，N=40时已经能较好的接近心形图案。不同N分别生成图案如下：

\begin{figure}[H]
    \centering
    \subfigure[N = 10 plot]{
        \includegraphics[scale=0.3]{../fig/curve1.png}}
    %\hspace{0.5in} % 两图片之间的距离
    \subfigure[N = 40 plot]{
        \includegraphics[scale=0.3]{../fig/curve2.png}}
    \subfigure[N = 160 plot]{
        \includegraphics[scale=0.3]{../fig/curve3.png}}
    \caption{\label{3.2}curve plot}
\end{figure}

\subsection*{附A题剩余图}
A题中specified,natual,not\_a\_knot,periodic边界条件样条的函数图像、误差图像、log(errs)-log(N-1)的图像如下：

\begin{figure}[H]
    \centering
    \subfigure[spline-func plot]{
        \includegraphics[scale=0.3]{../fig/A-specified-func.png}}
    %\hspace{0.5in} % 两图片之间的距离
    \subfigure[spline-error plot]{
        \includegraphics[scale=0.3]{../fig/A-specified-error.png}}
    \subfigure[log(errs)-log(N-1) plot]{
        \includegraphics[scale=0.3]{../fig/A-specified-rate.png}}
    \caption{\label{a-1}ppForm specified plot}
\end{figure}

\begin{figure}[H]
    \centering
    \subfigure[spline-func plot]{
        \includegraphics[scale=0.3]{../fig/A-natual-func.png}}
    %\hspace{0.5in} % 两图片之间的距离
    \subfigure[spline-error plot]{
        \includegraphics[scale=0.3]{../fig/A-natual-error.png}}
    \subfigure[log(errs)-log(N-1) plot]{
        \includegraphics[scale=0.3]{../fig/A-natual-rate.png}}
    \caption{\label{a-2}ppForm natual plot}
\end{figure}

\begin{figure}[H]
    \centering
    \subfigure[spline-func plot]{
        \includegraphics[scale=0.3]{../fig/A-not_a_knot-func.png}}
    %\hspace{0.5in} % 两图片之间的距离
    \subfigure[spline-error plot]{
        \includegraphics[scale=0.3]{../fig/A-not_a_knot-error.png}}
    \subfigure[log(errs)-log(N-1) plot]{
        \includegraphics[scale=0.3]{../fig/A-not_a_knot-rate.png}}
    \caption{\label{a-3}ppForm not\_a\_knot plot}
\end{figure}

\begin{figure}[H]
    \centering
    \subfigure[spline-func plot]{
        \includegraphics[scale=0.3]{../fig/A-periodic-func.png}}
    %\hspace{0.5in} % 两图片之间的距离
    \subfigure[spline-error plot]{
        \includegraphics[scale=0.3]{../fig/A-periodic-error.png}}
    \subfigure[log(errs)-log(N-1) plot]{
        \includegraphics[scale=0.3]{../fig/A-periodic-rate.png}}
    \caption{\label{a-4}ppForm periodic plot}
\end{figure}

\end{document} 